// Replace this section below with the button you want to simulate.
// ===============================================================================
// ============ THIS IS CHERRY MX RED ==========
// ============ Set the travel range according to your simulation target =========
int travel_range = 4000;

// ============= Button Data ==============
float button_v0_Down[] = {10.000,30.080,28.830,33.310,34.020,34.350,35.290,35.300,35.380,35.570,35.670,35.980,36.510,36.760,36.940,37.120,37.490,38.060,37.990,38.740,38.620,38.590,38.980,38.980,38.590,39.350,39.720,39.920,40.670,41.230,41.200,41.350,41.660,41.900,42.280,42.760,43.360,43.360,43.850,43.580,43.900,44.350,44.630,45.250,45.870,46.850,47.810,48.580,49.250,50.460,52.690,53.620,54.290,54.580,54.780,55.790,55.780,55.180,55.970,56.040,57.160,57.030,59.060,58.550,58.900,59.420,59.670,60.600,60.360,60.670,61.860,62.000,62.030,62.070,61.220,61.110,60.790,61.760,62.130,62.390,62.790};
float button_v0_Up[] =   {10.000,10.000,10.000,10.000,15.280,22.190,22.390,23.090,22.980,23.240,24.080,24.190,25.030,25.070,25.640,25.810,26.030,26.540,26.990,27.390,28.000,28.620,29.530,30.110,30.200,30.530,31.530,31.520,31.830,32.340,33.330,33.890,33.070,34.080,34.300,34.670,35.420,35.310,35.980,36.620,36.810,37.380,37.810,37.850,38.350,38.570,38.850,39.490,39.380,39.920,40.380,42.030,42.440,42.610,43.060,42.580,42.540,43.440,42.810,43.510,43.480,43.950,45.100,45.040,45.380,44.900,45.490,45.700,45.370,45.630,45.900,46.530,47.810,47.850,48.580,48.380,48.200,48.430,47.670,48.760,48.760};
float button_v1_Down[] = {10.000,22.494,22.944,26.553,28.422,30.150,32.171,33.662,35.053,36.288,37.219,37.993,38.666,39.059,39.344,39.586,39.877,40.208,40.165,40.516,40.471,40.553,40.936,41.169,41.180,41.683,41.904,41.996,42.368,42.685,42.765,42.989,43.332,43.655,44.034,44.423,44.817,44.862,45.134,45.047,45.313,45.722,46.117,46.725,47.340,48.111,48.832,49.418,49.922,50.670,51.904,52.474,52.921,53.207,53.498,54.239,54.502,54.470,55.106,55.335,56.043,56.099,57.225,57.068,57.310,57.603,57.742,58.222,58.143,58.374,59.085,59.305,59.505,59.749,59.592,59.833,59.956,60.669,61.008,61.224,61.459};
float button_v1_Up[] =   {10.000,10.000,11.034,13.694,17.553,22.180,23.400,24.752,25.521,26.273,27.137,27.512,28.172,28.371,28.794,29.014,29.302,29.806,30.339,30.867,31.476,32.035,32.660,33.040,33.120,33.308,33.865,33.982,34.329,34.829,35.588,36.130,35.974,36.740,37.132,37.617,38.293,38.502,39.040,39.508,39.745,40.222,40.716,41.089,41.723,42.201,42.671,43.288,43.514,44.055,44.550,45.625,46.045,46.290,46.623,46.462,46.526,47.083,46.901,47.404,47.553,47.967,48.752,48.974,49.437,49.517,50.141,50.564,50.700,51.123,51.570,52.266,53.409,54.111,55.368,56.337,57.369,58.484,58.840,59.822,60.010};
float button_v2_Down[] = {13.710,14.909,17.057,19.796,22.825,25.949,29.052,32.024,34.725,37.006,38.767,40.006,40.822,41.359,41.748,42.052,42.264,42.356,42.340,42.291,42.321,42.517,42.893,43.358,43.769,44.015,44.088,44.072,44.066,44.141,44.330,44.629,45.005,45.410,45.788,46.086,46.273,46.365,46.418,46.514,46.726,47.094,47.604,48.201,48.811,49.372,49.853,50.255,50.593,50.880,51.119,51.329,51.551,51.835,52.215,52.689,53.223,53.760,54.242,54.630,54.926,55.169,55.391,55.586,55.721,55.787,55.813,55.845,55.926,56.079,56.310,56.611,56.980,57.428,57.964,58.556,59.121,59.578,59.886,60.058,60.129};
float button_v2_Up[] =   {12.849,13.770,15.418,17.518,19.826,22.169,24.410,26.414,28.062,29.305,30.194,30.834,31.313,31.673,31.949,32.217,32.574,33.072,33.688,34.343,34.952,35.450,35.790,35.970,36.039,36.085,36.200,36.444,36.828,37.317,37.846,38.369,38.879,39.401,39.963,40.565,41.165,41.694,42.100,42.397,42.679,43.064,43.621,44.328,45.096,45.831,46.491,47.087,47.647,48.189,48.719,49.220,49.650,49.970,50.185,50.345,50.513,50.726,50.993,51.298,51.626,51.984,52.403,52.907,53.493,54.135,54.792,55.428,56.029,56.615,57.241,58.001,59.008,60.373,62.157,64.293,66.537,68.538,70.011,70.883,71.259};
float button_v3_Down[] = {13.227,14.270,16.139,18.523,21.167,23.910,26.668,29.355,31.840,33.969,35.633,36.833,37.666,38.258,38.711,39.079,39.379,39.607,39.768,39.886,40.025,40.276,40.701,41.273,41.893,42.452,42.906,43.275,43.607,43.939,44.290,44.651,45.007,45.346,45.656,45.909,46.090,46.218,46.357,46.577,46.911,47.350,47.865,48.430,49.025,49.644,50.293,50.968,51.636,52.227,52.675,52.980,53.204,53.425,53.691,53.996,54.316,54.638,54.976,55.340,55.718,56.084,56.423,56.744,57.060,57.373,57.669,57.929,58.153,58.351,58.529,58.688,58.831,58.987,59.202,59.504,59.866,60.223,60.511,60.700,60.790};
float button_v3_Up[] =   {12.993,13.960,15.692,17.898,20.322,22.782,25.122,27.181,28.803,29.909,30.569,30.956,31.250,31.560,31.920,32.343,32.839,33.398,33.979,34.528,35.014,35.436,35.795,36.094,36.345,36.574,36.816,37.090,37.392,37.692,37.956,38.178,38.380,38.586,38.796,38.986,39.123,39.198,39.227,39.263,39.391,39.711,40.302,41.174,42.250,43.393,44.464,45.373,46.088,46.632,47.056,47.418,47.758,48.093,48.431,48.764,49.088,49.412,49.767,50.184,50.674,51.226,51.824,52.461,53.142,53.882,54.695,55.589,56.571,57.668,58.929,60.407,62.121,64.056,66.172,68.370,70.471,72.241,73.506,74.244,74.561};
float button_v4_Down[]=  {12.744,13.631,15.220,17.251,19.509,21.871,24.283,26.685,28.955,30.932,32.499,33.660,34.511,35.158,35.674,36.106,36.493,36.858,37.196,37.481,37.730,38.035,38.509,39.189,40.017,40.889,41.723,42.478,43.148,43.738,44.250,44.673,45.008,45.282,45.523,45.733,45.906,46.071,46.296,46.640,47.096,47.607,48.127,48.658,49.238,49.916,50.732,51.681,52.679,53.573,54.232,54.632,54.856,55.015,55.166,55.304,55.409,55.516,55.710,56.050,56.509,56.998,57.455,57.902,58.399,58.960,59.525,60.013,60.380,60.623,60.749,60.764,60.683,60.546,60.440,60.451,60.611,60.868,61.136,61.342,61.451};
float button_v4_Up[]=    {13.137,14.151,15.966,18.278,20.819,23.394,25.834,27.949,29.543,30.513,30.943,31.077,31.188,31.448,31.891,32.468,33.104,33.725,34.270,34.713,35.077,35.421,35.800,36.219,36.651,37.063,37.431,37.736,37.955,38.066,38.067,37.988,37.880,37.770,37.629,37.406,37.082,36.702,36.354,36.128,36.102,36.358,36.983,38.020,39.404,40.955,42.437,43.658,44.529,45.075,45.394,45.617,45.865,46.217,46.677,47.183,47.663,48.098,48.541,49.070,49.722,50.468,51.245,52.015,52.791,53.629,54.598,55.750,57.112,58.720,60.617,62.813,65.234,67.740,70.000,70.000,70.000,70.000,70.000,70.000,70.000};
float button_v5_Down[] = {12.026,12.681,13.854,15.355,17.026,18.788,20.625,22.532,24.465,26.320,27.982,29.386,30.541,31.492,32.275,32.933,33.517,34.066,34.577,35.006,35.337,35.632,36.022,36.612,37.431,38.418,39.466,40.480,41.388,42.145,42.736,43.201,43.634,44.120,44.675,45.228,45.691,46.024,46.276,46.545,46.889,47.297,47.714,48.123,48.570,49.122,49.808,50.573,51.306,51.888,52.272,52.503,52.681,52.894,53.172,53.511,53.887,54.299,54.764,55.278,55.784,56.197,56.488,56.718,56.986,57.335,57.715,58.043,58.268,58.404,58.504,58.618,58.764,58.929,59.115,59.356,59.682,60.059,60.410,60.662,60.788};
float button_v5_Up[] =   {13.648,14.827,16.937,19.621,22.557,25.495,28.206,30.452,32.052,33.017,33.592,34.113,34.785,35.584,36.336,36.867,37.126,37.230,37.359,37.554,37.677,37.633,37.549,37.644,37.978,38.361,38.505,38.241,37.581,36.681,35.792,35.136,34.755,34.514,34.316,34.239,34.397,34.808,35.430,36.230,37.105,37.847,38.299,38.537,38.818,39.370,40.218,41.224,42.237,43.235,44.317,45.638,47.297,49.267,51.374,53.383,55.129,56.577,57.809,58.966,60.174,61.479,62.897,64.520,66.510,68.983,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000};
float button_v6_Down[] = {11.308,11.730,12.488,13.458,14.544,15.706,16.967,18.379,19.974,21.709,23.465,25.112,26.572,27.825,28.876,29.760,30.540,31.273,31.958,32.531,32.943,33.230,33.534,34.035,34.845,35.946,37.209,38.481,39.627,40.551,41.221,41.729,42.260,42.959,43.826,44.724,45.475,45.977,46.257,46.450,46.683,46.987,47.301,47.589,47.901,48.328,48.883,49.466,49.932,50.202,50.311,50.374,50.507,50.772,51.179,51.717,52.365,53.082,53.817,54.505,55.058,55.397,55.521,55.534,55.574,55.711,55.906,56.072,56.156,56.186,56.259,56.472,56.846,57.312,57.790,58.262,58.753,59.251,59.685,59.983,60.126};
float button_v6_Up[] =   {14.159,15.503,17.908,20.964,24.295,27.596,30.579,32.955,34.561,35.520,36.240,37.148,38.382,39.720,40.781,41.266,41.147,40.734,40.449,40.395,40.276,39.845,39.299,39.069,39.305,39.659,39.580,38.746,37.207,35.297,33.517,32.285,31.631,31.258,31.004,31.071,31.712,32.914,34.505,36.331,38.109,39.336,39.615,39.053,38.231,37.784,38.000,38.790,39.946,41.395,43.241,45.660,48.730,52.318,56.072,59.584,62.595,65.056,67.077,68.863,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000};
float button_v7_Down[] = {10.654,10.865,11.244,11.729,12.274,12.858,13.497,14.210,14.987,15.854,16.733,17.556,18.286,18.913,19.438,19.880,20.701,22.364,24.204,26.109,27.938,29.558,30.929,32.167,33.479,35.007,36.688,38.302,39.657,40.736,41.675,42.633,43.678,44.776,45.838,46.784,47.564,48.175,48.650,49.050,49.438,49.845,50.261,50.659,51.029,51.367,51.655,51.859,51.960,51.980,52.008,52.161,52.511,53.038,53.669,54.332,54.963,55.495,55.871,56.060,56.061,55.919,55.745,55.683,55.829,56.153,56.511,56.774,56.925,57.052,57.254,57.560,57.921,58.236,58.410,58.410,58.337,58.384,58.686,59.156,59.514};
float button_v7_Up[] =   {14.567,16.041,18.680,22.026,25.651,29.200,32.346,34.814,36.467,37.368,37.741,37.861,37.888,37.730,37.178,36.223,35.161,34.392,34.130,34.284,34.559,34.738,34.843,35.054,35.498,36.091,36.527,36.409,35.532,34.159,32.971,32.603,33.154,34.243,35.525,36.970,38.636,40.448,42.359,44.483,46.830,49.120,50.960,52.065,52.380,52.189,51.964,51.967,52.240,53.023,54.837,58.044,62.528,67.852,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000};
float button_v8_Down[] = {10.000,10.000,10.000,10.001,10.003,10.011,10.028,10.042,10.000,10.000,10.000,10.000,10.000,10.000,10.000,10.000,10.863,13.454,16.451,19.687,22.933,25.886,28.325,30.299,32.113,34.068,36.166,38.123,39.686,40.920,42.130,43.538,45.097,46.592,47.851,48.845,49.653,50.374,51.044,51.651,52.192,52.703,53.220,53.728,54.156,54.406,54.427,54.253,53.987,53.759,53.706,53.948,54.514,55.304,56.160,56.947,57.560,57.909,57.926,57.615,57.064,56.442,55.968,55.831,56.085,56.595,57.116,57.476,57.694,57.919,58.249,58.648,58.996,59.161,59.029,58.559,57.921,57.517,57.687,58.329,58.903};
float button_v8_Up[] =   {14.974,16.580,19.452,23.087,27.007,30.803,34.114,36.673,38.373,39.216,39.242,38.574,37.393,35.740,33.576,31.180,29.176,28.050,27.812,28.172,28.843,29.631,30.386,31.039,31.690,32.524,33.474,34.072,33.858,33.020,32.424,32.921,34.678,37.229,40.045,42.868,45.560,47.981,50.213,52.634,55.551,58.904,62.305,65.077,66.528,66.595,65.928,65.144,64.535,64.651,66.434,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000};
float button_v9_Down[] = {10.000,10.000,10.000,10.000,10.000,10.000,10.000,10.000,10.000,10.000,10.000,10.000,10.000,10.000,10.000,10.000,10.000,10.000,10.000,13.265,17.928,22.214,25.721,28.431,30.747,33.129,35.644,37.944,39.715,41.105,42.585,44.442,46.516,48.408,49.864,50.906,51.742,52.573,53.438,54.252,54.947,55.561,56.179,56.797,57.283,57.445,57.199,56.647,56.014,55.538,55.404,55.735,56.518,57.570,58.650,59.562,60.157,60.322,59.981,59.170,58.067,56.965,56.192,55.980,56.341,57.037,57.721,58.178,58.463,58.785,59.244,59.736,60.071,60.086,59.649,58.707,57.505,56.650,56.688,57.502,58.291};
float button_v9_Up[] =   {15.381,17.118,20.224,24.148,28.363,32.407,35.881,38.532,40.279,41.064,40.743,39.287,36.898,33.750,29.974,26.137,23.191,21.708,21.494,22.060,23.127,24.524,25.929,27.024,27.883,28.957,30.421,31.735,32.183,31.882,31.877,33.239,36.201,40.215,44.566,48.767,52.484,55.514,58.067,60.785,64.272,68.688,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000,70.000};

// ============ Vibration settings ============
bool if_vib = false;
int vib_point_1 = 5000;    // will not activate anything
int vib_point_2 = 5000;    // will not activate anything

int vib_file0 = 0; // will not activate anything
int vib_file1 = 0;
int vib_file2 = 0;
int vib_file3 = 0;
int vib_file4 = 0;
int vib_file5 = 0;
int vib_file6 = 0;
int vib_file7 = 0;
int vib_file8 = 0;
int vib_file9 = 0;

// ===============================================================================
// Replace the section above